Project conducted by R.P.M. Kras¶

Personal development project¶

Predicting future of Solana

Source: "SOL-USD", yahoofinance.com

In [ ]:
import yfinance as yf
In [ ]:
from datetime import datetime
end = datetime.now()
start = datetime(end.year-5, end.month, end.day)
In [ ]:
stock = "SOL-USD"
sol_data = yf.download(stock, start, end)
[*********************100%%**********************]  1 of 1 completed

Data visualization and preparation¶

In [ ]:
sol_data.head
Out[ ]:
<bound method NDFrame.head of                   Open        High         Low       Close   Adj Close  \
Date                                                                     
2020-04-10    0.832005    1.313487    0.694187    0.951054    0.951054   
2020-04-11    0.951054    1.049073    0.765020    0.776819    0.776819   
2020-04-12    0.785448    0.956670    0.762426    0.882507    0.882507   
2020-04-13    0.890760    0.891603    0.773976    0.777832    0.777832   
2020-04-14    0.777832    0.796472    0.628169    0.661925    0.661925   
...                ...         ...         ...         ...         ...   
2024-04-24  154.701309  159.580902  145.770569  147.745148  147.745148   
2024-04-25  147.749619  149.303757  142.264572  144.892120  144.892120   
2024-04-26  144.889175  145.854614  138.908386  139.104340  139.104340   
2024-04-27  139.104340  142.874512  134.028915  141.289169  141.289169   
2024-04-28  141.298676  144.477203  141.039108  142.353577  142.353577   

                Volume  
Date                    
2020-04-10    87364276  
2020-04-11    43862444  
2020-04-12    38736897  
2020-04-13    18211285  
2020-04-14    16747614  
...                ...  
2024-04-24  3932336720  
2024-04-25  3674969172  
2024-04-26  2564389027  
2024-04-27  2373155947  
2024-04-28  2122330752  

[1480 rows x 6 columns]>
In [ ]:
sol_data.info()
<class 'pandas.core.frame.DataFrame'>
DatetimeIndex: 1480 entries, 2020-04-10 to 2024-04-28
Data columns (total 6 columns):
 #   Column     Non-Null Count  Dtype  
---  ------     --------------  -----  
 0   Open       1480 non-null   float64
 1   High       1480 non-null   float64
 2   Low        1480 non-null   float64
 3   Close      1480 non-null   float64
 4   Adj Close  1480 non-null   float64
 5   Volume     1480 non-null   int64  
dtypes: float64(5), int64(1)
memory usage: 80.9 KB
In [ ]:
sol_data.isna().sum()
Out[ ]:
Open         0
High         0
Low          0
Close        0
Adj Close    0
Volume       0
dtype: int64
In [ ]:
import matplotlib.pyplot as plt
%matplotlib inline
In [ ]:
def plot_graph(figsize, values, column_name):
    plt.figure()
    values.plot(figsize = figsize)
    plt.xlabel("years")
    plt.ylabel(column_name)
    plt.title(f"{column_name} of Solana")
In [ ]:
for column in sol_data.columns:
    plot_graph((15,5),sol_data[column], column)
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
In [ ]:
import pandas as pd

for i in range(2020,2025):
    print(list(sol_data.index.year).count(i))
266
365
365
365
119
In [ ]:
sol_data['MA_for_100_days'] = sol_data['Adj Close'].rolling(100).mean()
In [ ]:
plot_graph((15,5), sol_data[['MA_for_100_days', 'Adj Close']], 'Moving average for 100 days')
<Figure size 640x480 with 0 Axes>
No description has been provided for this image
In [ ]:
adj_close = sol_data[['Adj Close']]
print("Highest recorded adj closing price: "f"{max(adj_close.values)}")
print("Lowest recorded adj closing price: "f"{min(adj_close.values)}")
Highest recorded adj closing price: [258.93432617]
Lowest recorded adj closing price: [0.51527297]
In [ ]:
from sklearn.preprocessing import MinMaxScaler

scaler = MinMaxScaler(feature_range=(0,1))
scaled_data = scaler.fit_transform(adj_close)
scaled_data
Out[ ]:
array([[0.00168633],
       [0.0010121 ],
       [0.00142108],
       ...,
       [0.53629585],
       [0.54475045],
       [0.54886937]])
In [ ]:
x_data = []
y_data = []

for i in range(100, len(scaled_data)):
    x_data.append(scaled_data[i-100:i])
    y_data.append(scaled_data[i])

import numpy as np
x_data, y_data = np.array(x_data), np.array(y_data)
In [ ]:
int(len(x_data)*0.7)
Out[ ]:
965
In [ ]:
1408-100-int(len(x_data)*0.8)
Out[ ]:
204
In [ ]:
split_len = int(len(x_data)*0.8)
x_train = x_data[:split_len]
y_train = y_data[:split_len]

x_test = x_data[split_len:]
y_test = y_data[split_len:]
In [ ]:
print(x_train.shape)
print(y_train.shape)
print(x_test.shape)
print(y_test.shape)
(1104, 100, 1)
(1104, 1)
(276, 100, 1)
(276, 1)
In [ ]:
from keras.models import Sequential
from keras.layers import Dense, LSTM
In [ ]:
model = Sequential()
model.add(LSTM(128, return_sequences=True, input_shape=(x_train.shape[1],1)))
model.add(LSTM(64, return_sequences=False))
model.add(Dense(25))
model.add(Dense(1))
C:\Users\robkr\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.11_qbz5n2kfra8p0\LocalCache\local-packages\Python311\site-packages\keras\src\layers\rnn\rnn.py:204: UserWarning: Do not pass an `input_shape`/`input_dim` argument to a layer. When using Sequential models, prefer using an `Input(shape)` object as the first layer in the model instead.
  super().__init__(**kwargs)
In [ ]:
model.compile(optimizer="adam", loss="mean_squared_error")
In [ ]:
model.fit(x_train, y_train, batch_size=32, epochs=16)
Epoch 1/16
35/35 ━━━━━━━━━━━━━━━━━━━━ 2s 57ms/step - loss: 6.7713e-04
Epoch 2/16
35/35 ━━━━━━━━━━━━━━━━━━━━ 2s 60ms/step - loss: 5.9745e-04
Epoch 3/16
35/35 ━━━━━━━━━━━━━━━━━━━━ 2s 60ms/step - loss: 5.2379e-04
Epoch 4/16
35/35 ━━━━━━━━━━━━━━━━━━━━ 2s 60ms/step - loss: 5.0792e-04
Epoch 5/16
35/35 ━━━━━━━━━━━━━━━━━━━━ 2s 58ms/step - loss: 5.0436e-04
Epoch 6/16
35/35 ━━━━━━━━━━━━━━━━━━━━ 2s 54ms/step - loss: 6.9417e-04
Epoch 7/16
35/35 ━━━━━━━━━━━━━━━━━━━━ 2s 54ms/step - loss: 4.4505e-04
Epoch 8/16
35/35 ━━━━━━━━━━━━━━━━━━━━ 2s 58ms/step - loss: 5.3546e-04
Epoch 9/16
35/35 ━━━━━━━━━━━━━━━━━━━━ 2s 55ms/step - loss: 4.5000e-04
Epoch 10/16
35/35 ━━━━━━━━━━━━━━━━━━━━ 2s 55ms/step - loss: 4.6141e-04
Epoch 11/16
35/35 ━━━━━━━━━━━━━━━━━━━━ 2s 53ms/step - loss: 4.0966e-04
Epoch 12/16
35/35 ━━━━━━━━━━━━━━━━━━━━ 2s 60ms/step - loss: 4.8374e-04
Epoch 13/16
35/35 ━━━━━━━━━━━━━━━━━━━━ 2s 59ms/step - loss: 4.2676e-04
Epoch 14/16
35/35 ━━━━━━━━━━━━━━━━━━━━ 2s 56ms/step - loss: 3.9546e-04
Epoch 15/16
35/35 ━━━━━━━━━━━━━━━━━━━━ 2s 59ms/step - loss: 4.5874e-04
Epoch 16/16
35/35 ━━━━━━━━━━━━━━━━━━━━ 2s 62ms/step - loss: 4.1593e-04
Out[ ]:
<keras.src.callbacks.history.History at 0x2709f5a93d0>
In [ ]:
model.summary()
Model: "sequential"
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ Layer (type)                    ┃ Output Shape           ┃       Param # ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ lstm (LSTM)                     │ (None, 100, 128)       │        66,560 │
├─────────────────────────────────┼────────────────────────┼───────────────┤
│ lstm_1 (LSTM)                   │ (None, 64)             │        49,408 │
├─────────────────────────────────┼────────────────────────┼───────────────┤
│ dense (Dense)                   │ (None, 25)             │         1,625 │
├─────────────────────────────────┼────────────────────────┼───────────────┤
│ dense_1 (Dense)                 │ (None, 1)              │            26 │
└─────────────────────────────────┴────────────────────────┴───────────────┘
 Total params: 352,859 (1.35 MB)
 Trainable params: 117,619 (459.45 KB)
 Non-trainable params: 0 (0.00 B)
 Optimizer params: 235,240 (918.91 KB)
In [ ]:
predictions = model.predict(x_test)
9/9 ━━━━━━━━━━━━━━━━━━━━ 1s 65ms/step
In [ ]:
predictions
Out[ ]:
array([[0.10476827],
       [0.1058419 ],
       [0.10706996],
       [0.10738068],
       [0.10672432],
       [0.10593645],
       [0.10451553],
       [0.10263409],
       [0.10102185],
       [0.09972688],
       [0.09930767],
       [0.09931739],
       [0.10049287],
       [0.10215778],
       [0.10393409],
       [0.1053826 ],
       [0.10663643],
       [0.10697297],
       [0.10751789],
       [0.10699897],
       [0.10515096],
       [0.10209917],
       [0.09875402],
       [0.09638263],
       [0.09489436],
       [0.09370672],
       [0.09239548],
       [0.09225801],
       [0.09220206],
       [0.09169433],
       [0.09098111],
       [0.09072249],
       [0.09055137],
       [0.09145844],
       [0.09194353],
       [0.09122155],
       [0.08970317],
       [0.08821423],
       [0.08709624],
       [0.08632007],
       [0.08650449],
       [0.08660891],
       [0.08688588],
       [0.08696254],
       [0.08680379],
       [0.08558482],
       [0.08366593],
       [0.08193001],
       [0.08101166],
       [0.08104298],
       [0.08182458],
       [0.08281845],
       [0.08348148],
       [0.08452284],
       [0.08585174],
       [0.08727532],
       [0.08778161],
       [0.08768655],
       [0.08732475],
       [0.08680835],
       [0.08633488],
       [0.08566486],
       [0.08511997],
       [0.08542396],
       [0.08637896],
       [0.08837505],
       [0.09250581],
       [0.09650816],
       [0.09979904],
       [0.1017207 ],
       [0.10217411],
       [0.10237686],
       [0.10226671],
       [0.10197027],
       [0.1006995 ],
       [0.09919089],
       [0.09778775],
       [0.09614743],
       [0.09517408],
       [0.09488852],
       [0.09495053],
       [0.09688757],
       [0.09936677],
       [0.1011987 ],
       [0.1035864 ],
       [0.10749393],
       [0.11331818],
       [0.11860675],
       [0.12490653],
       [0.12893008],
       [0.1329258 ],
       [0.13627863],
       [0.13768624],
       [0.13773188],
       [0.13805366],
       [0.14023885],
       [0.14593102],
       [0.15472884],
       [0.16215332],
       [0.16675782],
       [0.1714537 ],
       [0.17414169],
       [0.17601994],
       [0.17788766],
       [0.17938796],
       [0.1823579 ],
       [0.19537601],
       [0.21000563],
       [0.22236653],
       [0.22696911],
       [0.23128034],
       [0.24232405],
       [0.2468098 ],
       [0.24771184],
       [0.24665618],
       [0.2474871 ],
       [0.24442327],
       [0.2361004 ],
       [0.232334  ],
       [0.23058894],
       [0.23055743],
       [0.23327516],
       [0.23567231],
       [0.23509803],
       [0.23616536],
       [0.23869032],
       [0.24132378],
       [0.24392705],
       [0.24964334],
       [0.25473434],
       [0.25693795],
       [0.25671753],
       [0.25615537],
       [0.26103488],
       [0.2740999 ],
       [0.28544638],
       [0.29581508],
       [0.29900143],
       [0.29624727],
       [0.2933429 ],
       [0.29552817],
       [0.2963382 ],
       [0.29748344],
       [0.29613316],
       [0.2972291 ],
       [0.2978696 ],
       [0.30715752],
       [0.32981634],
       [0.35773522],
       [0.39143166],
       [0.42458454],
       [0.45814666],
       [0.47358677],
       [0.47019666],
       [0.45325315],
       [0.43853274],
       [0.42336607],
       [0.4116401 ],
       [0.41296706],
       [0.41708955],
       [0.41369486],
       [0.4150599 ],
       [0.41296798],
       [0.40379807],
       [0.3892104 ],
       [0.38453642],
       [0.38698462],
       [0.39495343],
       [0.40141582],
       [0.39722317],
       [0.3934179 ],
       [0.38875538],
       [0.38511992],
       [0.38596106],
       [0.39312688],
       [0.39331985],
       [0.38959578],
       [0.38407576],
       [0.3772635 ],
       [0.36421132],
       [0.35233396],
       [0.34829667],
       [0.3470223 ],
       [0.353166  ],
       [0.3631229 ],
       [0.3744268 ],
       [0.38944408],
       [0.40227592],
       [0.40618017],
       [0.4057016 ],
       [0.40566444],
       [0.402852  ],
       [0.39690626],
       [0.39105034],
       [0.38800347],
       [0.3912714 ],
       [0.39857632],
       [0.41043383],
       [0.42383808],
       [0.43291706],
       [0.4424901 ],
       [0.45021015],
       [0.45963883],
       [0.4635934 ],
       [0.46045774],
       [0.45322785],
       [0.4492541 ],
       [0.44685888],
       [0.4426674 ],
       [0.4354102 ],
       [0.42518324],
       [0.41461012],
       [0.41103837],
       [0.4108925 ],
       [0.41937542],
       [0.42816067],
       [0.4453578 ],
       [0.47015712],
       [0.49663317],
       [0.51642483],
       [0.52840394],
       [0.53610647],
       [0.5307497 ],
       [0.52631503],
       [0.53765684],
       [0.55398065],
       [0.5675867 ],
       [0.57630473],
       [0.58527493],
       [0.5942504 ],
       [0.6154668 ],
       [0.6509109 ],
       [0.68994695],
       [0.71789694],
       [0.75715685],
       [0.7808774 ],
       [0.75830823],
       [0.749078  ],
       [0.7311405 ],
       [0.7092566 ],
       [0.6906959 ],
       [0.6923237 ],
       [0.7091341 ],
       [0.7303865 ],
       [0.7427615 ],
       [0.7521899 ],
       [0.76051056],
       [0.76813394],
       [0.78325   ],
       [0.783451  ],
       [0.7631563 ],
       [0.7452488 ],
       [0.7314327 ],
       [0.7119226 ],
       [0.7017824 ],
       [0.6996232 ],
       [0.7034052 ],
       [0.6989869 ],
       [0.69430393],
       [0.68987805],
       [0.6642397 ],
       [0.6209989 ],
       [0.59686273],
       [0.5724062 ],
       [0.55299467],
       [0.5366241 ],
       [0.5380734 ],
       [0.54785544],
       [0.56888616],
       [0.5864321 ],
       [0.6074815 ],
       [0.62094057],
       [0.61872274],
       [0.60642135],
       [0.585794  ],
       [0.5694302 ]], dtype=float32)
In [ ]:
inv_predictions = scaler.inverse_transform(predictions)
inv_predictions
Out[ ]:
array([[ 27.58939 ],
       [ 27.866837],
       [ 28.184193],
       [ 28.264488],
       [ 28.094872],
       [ 27.891272],
       [ 27.524078],
       [ 27.037878],
       [ 26.621244],
       [ 26.2866  ],
       [ 26.178268],
       [ 26.180779],
       [ 26.484547],
       [ 26.914791],
       [ 27.373823],
       [ 27.748146],
       [ 28.072159],
       [ 28.159128],
       [ 28.299946],
       [ 28.165846],
       [ 27.688286],
       [ 26.899645],
       [ 26.035194],
       [ 25.422382],
       [ 25.037786],
       [ 24.730875],
       [ 24.392025],
       [ 24.3565  ],
       [ 24.342043],
       [ 24.210836],
       [ 24.026525],
       [ 23.959694],
       [ 23.915472],
       [ 24.149878],
       [ 24.275234],
       [ 24.08866 ],
       [ 23.696283],
       [ 23.311512],
       [ 23.0226  ],
       [ 22.822025],
       [ 22.869682],
       [ 22.896666],
       [ 22.968243],
       [ 22.988052],
       [ 22.947025],
       [ 22.63202 ],
       [ 22.136145],
       [ 21.68755 ],
       [ 21.45023 ],
       [ 21.458324],
       [ 21.660303],
       [ 21.91714 ],
       [ 22.088478],
       [ 22.357586],
       [ 22.701   ],
       [ 23.068878],
       [ 23.199715],
       [ 23.175148],
       [ 23.081652],
       [ 22.948204],
       [ 22.825853],
       [ 22.652706],
       [ 22.511896],
       [ 22.590452],
       [ 22.837244],
       [ 23.35307 ],
       [ 24.420536],
       [ 25.45482 ],
       [ 26.305246],
       [ 26.80184 ],
       [ 26.91901 ],
       [ 26.971405],
       [ 26.94294 ],
       [ 26.866335],
       [ 26.537943],
       [ 26.14809 ],
       [ 25.78549 ],
       [ 25.361603],
       [ 25.11007 ],
       [ 25.036276],
       [ 25.0523  ],
       [ 25.552868],
       [ 26.19354 ],
       [ 26.666945],
       [ 27.283972],
       [ 28.293753],
       [ 29.798851],
       [ 31.165518],
       [ 32.7935  ],
       [ 33.83326 ],
       [ 34.86583 ],
       [ 35.732265],
       [ 36.09602 ],
       [ 36.107815],
       [ 36.190968],
       [ 36.755665],
       [ 38.226627],
       [ 40.500153],
       [ 42.418777],
       [ 43.60867 ],
       [ 44.822174],
       [ 45.516804],
       [ 46.00218 ],
       [ 46.484833],
       [ 46.87254 ],
       [ 47.64003 ],
       [ 51.004154],
       [ 54.784725],
       [ 57.97902 ],
       [ 59.168415],
       [ 60.28252 ],
       [ 63.136425],
       [ 64.29562 ],
       [ 64.52873 ],
       [ 64.25593 ],
       [ 64.47065 ],
       [ 63.6789  ],
       [ 61.528114],
       [ 60.554806],
       [ 60.103848],
       [ 60.095703],
       [ 60.79802 ],
       [ 61.41749 ],
       [ 61.269085],
       [ 61.5449  ],
       [ 62.1974  ],
       [ 62.877937],
       [ 63.550667],
       [ 65.02787 ],
       [ 66.34348 ],
       [ 66.91294 ],
       [ 66.85598 ],
       [ 66.7107  ],
       [ 67.971664],
       [ 71.34791 ],
       [ 74.28006 ],
       [ 76.959526],
       [ 77.78294 ],
       [ 77.07121 ],
       [ 76.32066 ],
       [ 76.88538 ],
       [ 77.09471 ],
       [ 77.39066 ],
       [ 77.041725],
       [ 77.32494 ],
       [ 77.490456],
       [ 79.89063 ],
       [ 85.7461  ],
       [ 92.96087 ],
       [101.66868 ],
       [110.23601 ],
       [118.9091  ],
       [122.89912 ],
       [122.023056],
       [117.64452 ],
       [113.84049 ],
       [109.921135],
       [106.89092 ],
       [107.23383 ],
       [108.299164],
       [107.42191 ],
       [107.77466 ],
       [107.23407 ],
       [104.864395],
       [101.09466 ],
       [ 99.88681 ],
       [100.51947 ],
       [102.578766],
       [104.24877 ],
       [103.16531 ],
       [102.18195 ],
       [100.97707 ],
       [100.0376  ],
       [100.25497 ],
       [102.10675 ],
       [102.15662 ],
       [101.194244],
       [ 99.76777 ],
       [ 98.00735 ],
       [ 94.63442 ],
       [ 91.56509 ],
       [ 90.521774],
       [ 90.19245 ],
       [ 91.780106],
       [ 94.35316 ],
       [ 97.2743  ],
       [101.155045],
       [104.47104 ],
       [105.47997 ],
       [105.3563  ],
       [105.346695],
       [104.61991 ],
       [103.08341 ],
       [101.57014 ],
       [100.78277 ],
       [101.627266],
       [103.51499 ],
       [106.5792  ],
       [110.04311 ],
       [112.38929 ],
       [114.86315 ],
       [116.858154],
       [119.29471 ],
       [120.31664 ],
       [119.50633 ],
       [117.637985],
       [116.61109 ],
       [115.99213 ],
       [114.908966],
       [113.03357 ],
       [110.390724],
       [107.65843 ],
       [106.73542 ],
       [106.69772 ],
       [108.88988 ],
       [111.16015 ],
       [115.60422 ],
       [122.01283 ],
       [128.85475 ],
       [133.9693  ],
       [137.06493 ],
       [139.0554  ],
       [137.67111 ],
       [136.52512 ],
       [139.45605 ],
       [143.67442 ],
       [147.1905  ],
       [149.4434  ],
       [151.76147 ],
       [154.0809  ],
       [159.56361 ],
       [168.72305 ],
       [178.81071 ],
       [186.03352 ],
       [196.17903 ],
       [202.30888 ],
       [196.47658 ],
       [194.0913  ],
       [189.45592 ],
       [183.80069 ],
       [179.00426 ],
       [179.42491 ],
       [183.76904 ],
       [189.26106 ],
       [192.459   ],
       [194.89548 ],
       [197.0457  ],
       [199.01572 ],
       [202.922   ],
       [202.97395 ],
       [197.7294  ],
       [193.10176 ],
       [189.53142 ],
       [184.48964 ],
       [181.86922 ],
       [181.31125 ],
       [182.28859 ],
       [181.1468  ],
       [179.93665 ],
       [178.79291 ],
       [172.16747 ],
       [160.99323 ],
       [154.75598 ],
       [148.43594 ],
       [143.41963 ],
       [139.18916 ],
       [139.5637  ],
       [142.09155 ],
       [147.5263  ],
       [152.0605  ],
       [157.50006 ],
       [160.97815 ],
       [160.40501 ],
       [157.2261  ],
       [151.8956  ],
       [147.66689 ]], dtype=float32)
In [ ]:
inv_y_test = scaler.inverse_transform(predictions)
inv_y_test
Out[ ]:
array([[ 27.58939 ],
       [ 27.866837],
       [ 28.184193],
       [ 28.264488],
       [ 28.094872],
       [ 27.891272],
       [ 27.524078],
       [ 27.037878],
       [ 26.621244],
       [ 26.2866  ],
       [ 26.178268],
       [ 26.180779],
       [ 26.484547],
       [ 26.914791],
       [ 27.373823],
       [ 27.748146],
       [ 28.072159],
       [ 28.159128],
       [ 28.299946],
       [ 28.165846],
       [ 27.688286],
       [ 26.899645],
       [ 26.035194],
       [ 25.422382],
       [ 25.037786],
       [ 24.730875],
       [ 24.392025],
       [ 24.3565  ],
       [ 24.342043],
       [ 24.210836],
       [ 24.026525],
       [ 23.959694],
       [ 23.915472],
       [ 24.149878],
       [ 24.275234],
       [ 24.08866 ],
       [ 23.696283],
       [ 23.311512],
       [ 23.0226  ],
       [ 22.822025],
       [ 22.869682],
       [ 22.896666],
       [ 22.968243],
       [ 22.988052],
       [ 22.947025],
       [ 22.63202 ],
       [ 22.136145],
       [ 21.68755 ],
       [ 21.45023 ],
       [ 21.458324],
       [ 21.660303],
       [ 21.91714 ],
       [ 22.088478],
       [ 22.357586],
       [ 22.701   ],
       [ 23.068878],
       [ 23.199715],
       [ 23.175148],
       [ 23.081652],
       [ 22.948204],
       [ 22.825853],
       [ 22.652706],
       [ 22.511896],
       [ 22.590452],
       [ 22.837244],
       [ 23.35307 ],
       [ 24.420536],
       [ 25.45482 ],
       [ 26.305246],
       [ 26.80184 ],
       [ 26.91901 ],
       [ 26.971405],
       [ 26.94294 ],
       [ 26.866335],
       [ 26.537943],
       [ 26.14809 ],
       [ 25.78549 ],
       [ 25.361603],
       [ 25.11007 ],
       [ 25.036276],
       [ 25.0523  ],
       [ 25.552868],
       [ 26.19354 ],
       [ 26.666945],
       [ 27.283972],
       [ 28.293753],
       [ 29.798851],
       [ 31.165518],
       [ 32.7935  ],
       [ 33.83326 ],
       [ 34.86583 ],
       [ 35.732265],
       [ 36.09602 ],
       [ 36.107815],
       [ 36.190968],
       [ 36.755665],
       [ 38.226627],
       [ 40.500153],
       [ 42.418777],
       [ 43.60867 ],
       [ 44.822174],
       [ 45.516804],
       [ 46.00218 ],
       [ 46.484833],
       [ 46.87254 ],
       [ 47.64003 ],
       [ 51.004154],
       [ 54.784725],
       [ 57.97902 ],
       [ 59.168415],
       [ 60.28252 ],
       [ 63.136425],
       [ 64.29562 ],
       [ 64.52873 ],
       [ 64.25593 ],
       [ 64.47065 ],
       [ 63.6789  ],
       [ 61.528114],
       [ 60.554806],
       [ 60.103848],
       [ 60.095703],
       [ 60.79802 ],
       [ 61.41749 ],
       [ 61.269085],
       [ 61.5449  ],
       [ 62.1974  ],
       [ 62.877937],
       [ 63.550667],
       [ 65.02787 ],
       [ 66.34348 ],
       [ 66.91294 ],
       [ 66.85598 ],
       [ 66.7107  ],
       [ 67.971664],
       [ 71.34791 ],
       [ 74.28006 ],
       [ 76.959526],
       [ 77.78294 ],
       [ 77.07121 ],
       [ 76.32066 ],
       [ 76.88538 ],
       [ 77.09471 ],
       [ 77.39066 ],
       [ 77.041725],
       [ 77.32494 ],
       [ 77.490456],
       [ 79.89063 ],
       [ 85.7461  ],
       [ 92.96087 ],
       [101.66868 ],
       [110.23601 ],
       [118.9091  ],
       [122.89912 ],
       [122.023056],
       [117.64452 ],
       [113.84049 ],
       [109.921135],
       [106.89092 ],
       [107.23383 ],
       [108.299164],
       [107.42191 ],
       [107.77466 ],
       [107.23407 ],
       [104.864395],
       [101.09466 ],
       [ 99.88681 ],
       [100.51947 ],
       [102.578766],
       [104.24877 ],
       [103.16531 ],
       [102.18195 ],
       [100.97707 ],
       [100.0376  ],
       [100.25497 ],
       [102.10675 ],
       [102.15662 ],
       [101.194244],
       [ 99.76777 ],
       [ 98.00735 ],
       [ 94.63442 ],
       [ 91.56509 ],
       [ 90.521774],
       [ 90.19245 ],
       [ 91.780106],
       [ 94.35316 ],
       [ 97.2743  ],
       [101.155045],
       [104.47104 ],
       [105.47997 ],
       [105.3563  ],
       [105.346695],
       [104.61991 ],
       [103.08341 ],
       [101.57014 ],
       [100.78277 ],
       [101.627266],
       [103.51499 ],
       [106.5792  ],
       [110.04311 ],
       [112.38929 ],
       [114.86315 ],
       [116.858154],
       [119.29471 ],
       [120.31664 ],
       [119.50633 ],
       [117.637985],
       [116.61109 ],
       [115.99213 ],
       [114.908966],
       [113.03357 ],
       [110.390724],
       [107.65843 ],
       [106.73542 ],
       [106.69772 ],
       [108.88988 ],
       [111.16015 ],
       [115.60422 ],
       [122.01283 ],
       [128.85475 ],
       [133.9693  ],
       [137.06493 ],
       [139.0554  ],
       [137.67111 ],
       [136.52512 ],
       [139.45605 ],
       [143.67442 ],
       [147.1905  ],
       [149.4434  ],
       [151.76147 ],
       [154.0809  ],
       [159.56361 ],
       [168.72305 ],
       [178.81071 ],
       [186.03352 ],
       [196.17903 ],
       [202.30888 ],
       [196.47658 ],
       [194.0913  ],
       [189.45592 ],
       [183.80069 ],
       [179.00426 ],
       [179.42491 ],
       [183.76904 ],
       [189.26106 ],
       [192.459   ],
       [194.89548 ],
       [197.0457  ],
       [199.01572 ],
       [202.922   ],
       [202.97395 ],
       [197.7294  ],
       [193.10176 ],
       [189.53142 ],
       [184.48964 ],
       [181.86922 ],
       [181.31125 ],
       [182.28859 ],
       [181.1468  ],
       [179.93665 ],
       [178.79291 ],
       [172.16747 ],
       [160.99323 ],
       [154.75598 ],
       [148.43594 ],
       [143.41963 ],
       [139.18916 ],
       [139.5637  ],
       [142.09155 ],
       [147.5263  ],
       [152.0605  ],
       [157.50006 ],
       [160.97815 ],
       [160.40501 ],
       [157.2261  ],
       [151.8956  ],
       [147.66689 ]], dtype=float32)
In [ ]:
rmse = np.sqrt(np.mean((inv_predictions - inv_y_test)**2))
In [ ]:
rmse
Out[ ]:
0.0
In [ ]:
plotting_data = pd.DataFrame({
    'original_test_data': inv_y_test.reshape(-1),
    'predictions': inv_predictions.reshape(-1)  
}, index=sol_data.index[split_len+100:])
In [ ]:
plot_graph((15,5), plotting_data, 'Prediction data')
<Figure size 640x480 with 0 Axes>
No description has been provided for this image
In [ ]:
plot_graph((15,5), pd.concat([adj_close[:split_len+200], plotting_data], axis=0), 'Entire data')
<Figure size 640x480 with 0 Axes>
No description has been provided for this image
In [ ]:
model.save("solana_predictive_model.keras")